package com.xm.service.reception_desk;

import com.xm.dao.reception_desk.AddressDao;
import com.xm.entity.Address;
import com.xm.exception.SqlErrorException;

import java.util.List;

/**
 * 地址
 * @author 康文程
 * @date 2024-1-7 下午 01:29
 */
public class AddressService {
    private final AddressDao dao = new AddressDao();
    /**
     * 获取用户所有收货地址
     * @param informationId 账号信息Id
     * @return 收货地址列表
     * @throws SqlErrorException SQL执行异常
     */
    public List<Address> getAllAddresses(Integer informationId) throws SqlErrorException {
        return dao.getAllAddresses(informationId);
    }
    /**
     * 添加或修改收货地址
     * 如果传了getAddressId则修改没有则新增
     * @param address 收货地址实体类
     * @throws SqlErrorException SQL执行异常
     */
    public boolean saveOrUpdateAddress(Address address) throws SqlErrorException {
        return dao.saveOrUpdateAddress(address);
    }
    /**
     * 根据收货地址ID修改 is_selected_address
     *
     * @param addressId         收货地址ID
     * @param isSelectedAddress 是否选中收货地址（0-选中，1-未选中）
     * @return 是否成功修改
     * @throws SqlErrorException SQL执行异常
     */
    public boolean updateIsSelectedAddress(String addressId, Integer isSelectedAddress) throws SqlErrorException {
        return dao.updateIsSelectedAddress(addressId,isSelectedAddress);
    }
    /**
     * 根据信息ID和选中状态查询被选中收货地址
     *
     * @param informationId      信息ID
     * @return 收货地址列表
     * @throws SqlErrorException SQL执行异常
     */
    public Address getAddressesByInformationIdAndSelected(Integer informationId) throws SqlErrorException {
        return dao.getAddressesByInformationIdAndSelected(informationId);
    }

    /**
     * 删除收货地址
     * @param addressId         收货地址ID
     * @return 成功返回true，失败返回false
     * @throws SqlErrorException SQL执行异常
     */
    public boolean getAddressDelete(Integer addressId) throws SqlErrorException {
        return dao.getAddressDelete(addressId);
    }
}
